{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# COMPSCI 389: Introduction to Machine Learning\n", "# Topic 8.0 Data Cleaning Introduction\n", "\n", "The code below runs gradient descent to minimize the sample mean squared error when using a linear parametric model, with the second-degree (order) polynomial basis. The first code block defines the various functions for this. I recommend skipping down to the next markdown block." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import PolynomialFeatures\n", "\n", "# Function to calculate mean squared error\n", "def mean_squared_error(predictions, labels):\n", " return np.mean((predictions - labels) ** 2)\n", "\n", "# Function to calculate gradients\n", "def compute_gradients(X, y, weights):\n", " predictions = X.dot(weights)\n", " errors = predictions - y\n", " return 2 / X.shape[0] * X.T.dot(errors)\n", "\n", "# Function for gradient descent\n", "def gradient_descent(X, y, learning_rate, iterations, polynomial_degree):\n", " # Expand features into polynomial basis\n", " poly = PolynomialFeatures(degree=polynomial_degree)\n", " X_poly = poly.fit_transform(X)\n", "\n", " # Initialize weights\n", " weights = np.zeros(X_poly.shape[1])\n", " loss_history = []\n", "\n", " loss = mean_squared_error(X_poly.dot(weights), y)\n", " print(f\"Iteration 0/{iterations}, Loss: {loss:.4f}\")\n", "\n", " for i in range(iterations):\n", " gradients = compute_gradients(X_poly, y, weights)\n", " weights -= learning_rate * gradients\n", " loss = mean_squared_error(X_poly.dot(weights), y)\n", " loss_history.append(loss)\n", " print(f\"Iteration {i+1}/{iterations}, Loss: {loss:.4f}\")\n", "\n", " return weights, loss_history\n", "\n", "# Function to make predictions\n", "def predict(X, weights):\n", " poly = PolynomialFeatures(degree=polynomial_degree)\n", " X_poly = poly.fit_transform(X)\n", " return X_poly.dot(weights)\n", "\n", "# Load the data set\n", "df = pd.read_csv(\"data/GPA.csv\", delimiter=',')\n", "\n", "# Split the data into features and labels\n", "X = df.iloc[:, :-1]\n", "y = df.iloc[:, -1]\n", "\n", "# Split the data into training and testing sets\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, shuffle=True)\n", "\n", "def run(alpha):\n", " # Parameters for gradient descent\n", " iterations = 1000\n", " polynomial_degree = 2\n", "\n", " # Run gradient descent\n", " weights, loss_history = gradient_descent(X_train, y_train, alpha, iterations, polynomial_degree)\n", "\n", " # Plotting the loss over iterations\n", " plt.plot(range(1, iterations + 1), loss_history)\n", " plt.xlabel('Iterations')\n", " plt.ylabel('Mean Squared Error')\n", " plt.yscale('log')\n", " plt.title(f'Gradient Descent Loss, Polynomial Degree: {polynomial_degree}')\n", " plt.show()\n", "\n", " # Predict on the test set\n", " predictions = predict(X_test, weights)\n", "\n", " # Calculate MSE on the test set\n", " mse_test = mean_squared_error(predictions, y_test)\n", " print(f\"Test MSE: {mse_test:.4f}\")\n", "\n", " # Calculate the standard error of the MSE\n", " squared_errors = (predictions - y_test) ** 2\n", " std_error = np.std(squared_errors) / np.sqrt(len(squared_errors))\n", " print(f\"Standard Error of MSE: {std_error:.4f}\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `run` function takes the step size (learning rate) `alpha` as its one argument. It then runs 1,000 iterations of gradient descent on the GPA data set using the second-degree polynomial basis. Let's recreate the plot from the last lecture!\n", "\n", "(Note: nan and inf can cause some errors, so don't worry if you see some errors below.)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration 0/1000, Loss: 8.4368\n", "Iteration 1/1000, Loss: 0.8292\n", "Iteration 2/1000, Loss: 0.7914\n", "Iteration 3/1000, Loss: 0.7893\n", "Iteration 4/1000, Loss: 0.7874\n", "Iteration 5/1000, Loss: 0.7856\n", "Iteration 6/1000, Loss: 0.7838\n", "Iteration 7/1000, Loss: 0.7820\n", "Iteration 8/1000, Loss: 0.7803\n", "Iteration 9/1000, Loss: 0.7786\n", "Iteration 10/1000, Loss: 0.7770\n", "Iteration 11/1000, Loss: 0.7753\n", "Iteration 12/1000, Loss: 0.7737\n", "Iteration 13/1000, Loss: 0.7722\n", "Iteration 14/1000, Loss: 0.7706\n", "Iteration 15/1000, Loss: 0.7691\n", "Iteration 16/1000, Loss: 0.7676\n", "Iteration 17/1000, Loss: 0.7662\n", "Iteration 18/1000, Loss: 0.7648\n", "Iteration 19/1000, Loss: 0.7634\n", "Iteration 20/1000, Loss: 0.7620\n", "Iteration 21/1000, Loss: 0.7606\n", "Iteration 22/1000, Loss: 0.7593\n", "Iteration 23/1000, Loss: 0.7580\n", "Iteration 24/1000, Loss: 0.7568\n", "Iteration 25/1000, Loss: 0.7555\n", "Iteration 26/1000, Loss: 0.7543\n", "Iteration 27/1000, Loss: 0.7531\n", "Iteration 28/1000, Loss: 0.7519\n", "Iteration 29/1000, Loss: 0.7508\n", "Iteration 30/1000, Loss: 0.7496\n", "Iteration 31/1000, Loss: 0.7485\n", "Iteration 32/1000, Loss: 0.7474\n", "Iteration 33/1000, Loss: 0.7464\n", "Iteration 34/1000, Loss: 0.7453\n", "Iteration 35/1000, Loss: 0.7443\n", "Iteration 36/1000, Loss: 0.7433\n", "Iteration 37/1000, Loss: 0.7423\n", "Iteration 38/1000, Loss: 0.7413\n", "Iteration 39/1000, Loss: 0.7404\n", "Iteration 40/1000, Loss: 0.7395\n", "Iteration 41/1000, Loss: 0.7385\n", "Iteration 42/1000, Loss: 0.7376\n", "Iteration 43/1000, Loss: 0.7368\n", "Iteration 44/1000, Loss: 0.7359\n", "Iteration 45/1000, Loss: 0.7350\n", "Iteration 46/1000, Loss: 0.7342\n", "Iteration 47/1000, Loss: 0.7334\n", "Iteration 48/1000, Loss: 0.7326\n", "Iteration 49/1000, Loss: 0.7318\n", "Iteration 50/1000, Loss: 0.7310\n", "Iteration 51/1000, Loss: 0.7303\n", "Iteration 52/1000, Loss: 0.7295\n", "Iteration 53/1000, Loss: 0.7288\n", "Iteration 54/1000, Loss: 0.7281\n", "Iteration 55/1000, Loss: 0.7274\n", "Iteration 56/1000, Loss: 0.7267\n", "Iteration 57/1000, Loss: 0.7260\n", "Iteration 58/1000, Loss: 0.7254\n", "Iteration 59/1000, Loss: 0.7247\n", "Iteration 60/1000, Loss: 0.7241\n", "Iteration 61/1000, Loss: 0.7235\n", "Iteration 62/1000, Loss: 0.7228\n", "Iteration 63/1000, Loss: 0.7222\n", "Iteration 64/1000, Loss: 0.7217\n", "Iteration 65/1000, Loss: 0.7211\n", "Iteration 66/1000, Loss: 0.7205\n", "Iteration 67/1000, Loss: 0.7199\n", "Iteration 68/1000, Loss: 0.7194\n", "Iteration 69/1000, Loss: 0.7189\n", "Iteration 70/1000, Loss: 0.7183\n", "Iteration 71/1000, Loss: 0.7178\n", "Iteration 72/1000, Loss: 0.7173\n", "Iteration 73/1000, Loss: 0.7168\n", "Iteration 74/1000, Loss: 0.7163\n", "Iteration 75/1000, Loss: 0.7158\n", "Iteration 76/1000, Loss: 0.7154\n", "Iteration 77/1000, Loss: 0.7149\n", "Iteration 78/1000, Loss: 0.7145\n", "Iteration 79/1000, Loss: 0.7140\n", "Iteration 80/1000, Loss: 0.7136\n", "Iteration 81/1000, Loss: 0.7131\n", "Iteration 82/1000, Loss: 0.7127\n", "Iteration 83/1000, Loss: 0.7123\n", "Iteration 84/1000, Loss: 0.7119\n", "Iteration 85/1000, Loss: 0.7115\n", "Iteration 86/1000, Loss: 0.7111\n", "Iteration 87/1000, Loss: 0.7107\n", "Iteration 88/1000, Loss: 0.7103\n", "Iteration 89/1000, Loss: 0.7100\n", "Iteration 90/1000, Loss: 0.7096\n", "Iteration 91/1000, Loss: 0.7093\n", "Iteration 92/1000, Loss: 0.7089\n", "Iteration 93/1000, Loss: 0.7086\n", "Iteration 94/1000, Loss: 0.7082\n", "Iteration 95/1000, Loss: 0.7079\n", "Iteration 96/1000, Loss: 0.7076\n", "Iteration 97/1000, Loss: 0.7073\n", "Iteration 98/1000, Loss: 0.7069\n", "Iteration 99/1000, Loss: 0.7066\n", "Iteration 100/1000, Loss: 0.7063\n", "Iteration 101/1000, Loss: 0.7060\n", "Iteration 102/1000, Loss: 0.7057\n", "Iteration 103/1000, Loss: 0.7055\n", "Iteration 104/1000, Loss: 0.7052\n", "Iteration 105/1000, Loss: 0.7049\n", "Iteration 106/1000, Loss: 0.7046\n", "Iteration 107/1000, Loss: 0.7044\n", "Iteration 108/1000, Loss: 0.7041\n", "Iteration 109/1000, Loss: 0.7039\n", "Iteration 110/1000, Loss: 0.7036\n", "Iteration 111/1000, Loss: 0.7034\n", "Iteration 112/1000, Loss: 0.7031\n", "Iteration 113/1000, Loss: 0.7029\n", "Iteration 114/1000, Loss: 0.7026\n", "Iteration 115/1000, Loss: 0.7024\n", "Iteration 116/1000, Loss: 0.7022\n", "Iteration 117/1000, Loss: 0.7020\n", "Iteration 118/1000, Loss: 0.7017\n", "Iteration 119/1000, Loss: 0.7015\n", "Iteration 120/1000, Loss: 0.7013\n", "Iteration 121/1000, Loss: 0.7011\n", "Iteration 122/1000, Loss: 0.7009\n", "Iteration 123/1000, Loss: 0.7007\n", "Iteration 124/1000, Loss: 0.7005\n", "Iteration 125/1000, Loss: 0.7003\n", "Iteration 126/1000, Loss: 0.7001\n", "Iteration 127/1000, Loss: 0.7000\n", "Iteration 128/1000, Loss: 0.6998\n", "Iteration 129/1000, Loss: 0.6996\n", "Iteration 130/1000, Loss: 0.6994\n", "Iteration 131/1000, Loss: 0.6993\n", "Iteration 132/1000, Loss: 0.6991\n", "Iteration 133/1000, Loss: 0.6989\n", "Iteration 134/1000, Loss: 0.6988\n", "Iteration 135/1000, Loss: 0.6986\n", "Iteration 136/1000, Loss: 0.6984\n", "Iteration 137/1000, Loss: 0.6983\n", "Iteration 138/1000, Loss: 0.6981\n", "Iteration 139/1000, Loss: 0.6980\n", "Iteration 140/1000, Loss: 0.6978\n", "Iteration 141/1000, Loss: 0.6977\n", "Iteration 142/1000, Loss: 0.6975\n", "Iteration 143/1000, Loss: 0.6974\n", "Iteration 144/1000, Loss: 0.6973\n", "Iteration 145/1000, Loss: 0.6971\n", "Iteration 146/1000, Loss: 0.6970\n", "Iteration 147/1000, Loss: 0.6969\n", "Iteration 148/1000, Loss: 0.6967\n", "Iteration 149/1000, Loss: 0.6966\n", "Iteration 150/1000, Loss: 0.6965\n", "Iteration 151/1000, Loss: 0.6964\n", "Iteration 152/1000, Loss: 0.6963\n", "Iteration 153/1000, Loss: 0.6961\n", "Iteration 154/1000, Loss: 0.6960\n", "Iteration 155/1000, Loss: 0.6959\n", "Iteration 156/1000, Loss: 0.6958\n", "Iteration 157/1000, Loss: 0.6957\n", "Iteration 158/1000, Loss: 0.6956\n", "Iteration 159/1000, Loss: 0.6955\n", "Iteration 160/1000, Loss: 0.6954\n", "Iteration 161/1000, Loss: 0.6953\n", "Iteration 162/1000, Loss: 0.6952\n", "Iteration 163/1000, Loss: 0.6951\n", "Iteration 164/1000, Loss: 0.6950\n", "Iteration 165/1000, Loss: 0.6949\n", "Iteration 166/1000, Loss: 0.6948\n", "Iteration 167/1000, Loss: 0.6947\n", "Iteration 168/1000, Loss: 0.6946\n", "Iteration 169/1000, Loss: 0.6945\n", "Iteration 170/1000, Loss: 0.6944\n", "Iteration 171/1000, Loss: 0.6943\n", "Iteration 172/1000, Loss: 0.6943\n", "Iteration 173/1000, Loss: 0.6942\n", "Iteration 174/1000, Loss: 0.6941\n", "Iteration 175/1000, Loss: 0.6940\n", "Iteration 176/1000, Loss: 0.6939\n", "Iteration 177/1000, Loss: 0.6939\n", "Iteration 178/1000, Loss: 0.6938\n", "Iteration 179/1000, Loss: 0.6937\n", "Iteration 180/1000, Loss: 0.6936\n", "Iteration 181/1000, Loss: 0.6936\n", "Iteration 182/1000, Loss: 0.6935\n", "Iteration 183/1000, Loss: 0.6934\n", "Iteration 184/1000, Loss: 0.6933\n", "Iteration 185/1000, Loss: 0.6933\n", "Iteration 186/1000, Loss: 0.6932\n", "Iteration 187/1000, Loss: 0.6931\n", "Iteration 188/1000, Loss: 0.6931\n", "Iteration 189/1000, Loss: 0.6930\n", "Iteration 190/1000, Loss: 0.6930\n", "Iteration 191/1000, Loss: 0.6929\n", "Iteration 192/1000, Loss: 0.6928\n", "Iteration 193/1000, Loss: 0.6928\n", "Iteration 194/1000, Loss: 0.6927\n", "Iteration 195/1000, Loss: 0.6927\n", "Iteration 196/1000, Loss: 0.6926\n", "Iteration 197/1000, Loss: 0.6925\n", "Iteration 198/1000, Loss: 0.6925\n", "Iteration 199/1000, Loss: 0.6924\n", "Iteration 200/1000, Loss: 0.6924\n", "Iteration 201/1000, Loss: 0.6923\n", "Iteration 202/1000, Loss: 0.6923\n", "Iteration 203/1000, Loss: 0.6922\n", "Iteration 204/1000, Loss: 0.6922\n", "Iteration 205/1000, Loss: 0.6921\n", "Iteration 206/1000, Loss: 0.6921\n", "Iteration 207/1000, Loss: 0.6920\n", "Iteration 208/1000, Loss: 0.6920\n", "Iteration 209/1000, Loss: 0.6919\n", "Iteration 210/1000, Loss: 0.6919\n", "Iteration 211/1000, Loss: 0.6918\n", "Iteration 212/1000, Loss: 0.6918\n", "Iteration 213/1000, Loss: 0.6917\n", "Iteration 214/1000, Loss: 0.6917\n", "Iteration 215/1000, Loss: 0.6917\n", "Iteration 216/1000, Loss: 0.6916\n", "Iteration 217/1000, Loss: 0.6916\n", "Iteration 218/1000, Loss: 0.6915\n", "Iteration 219/1000, Loss: 0.6915\n", "Iteration 220/1000, Loss: 0.6915\n", "Iteration 221/1000, Loss: 0.6914\n", "Iteration 222/1000, Loss: 0.6914\n", "Iteration 223/1000, Loss: 0.6913\n", "Iteration 224/1000, Loss: 0.6913\n", "Iteration 225/1000, Loss: 0.6913\n", "Iteration 226/1000, Loss: 0.6912\n", "Iteration 227/1000, Loss: 0.6912\n", "Iteration 228/1000, Loss: 0.6912\n", "Iteration 229/1000, Loss: 0.6911\n", "Iteration 230/1000, Loss: 0.6911\n", "Iteration 231/1000, Loss: 0.6911\n", "Iteration 232/1000, Loss: 0.6910\n", "Iteration 233/1000, Loss: 0.6910\n", "Iteration 234/1000, Loss: 0.6910\n", "Iteration 235/1000, Loss: 0.6909\n", "Iteration 236/1000, Loss: 0.6909\n", "Iteration 237/1000, Loss: 0.6909\n", "Iteration 238/1000, Loss: 0.6908\n", "Iteration 239/1000, Loss: 0.6908\n", "Iteration 240/1000, Loss: 0.6908\n", "Iteration 241/1000, Loss: 0.6907\n", "Iteration 242/1000, Loss: 0.6907\n", "Iteration 243/1000, Loss: 0.6907\n", "Iteration 244/1000, Loss: 0.6907\n", "Iteration 245/1000, Loss: 0.6906\n", "Iteration 246/1000, Loss: 0.6906\n", "Iteration 247/1000, Loss: 0.6906\n", "Iteration 248/1000, Loss: 0.6906\n", "Iteration 249/1000, Loss: 0.6905\n", "Iteration 250/1000, Loss: 0.6905\n", "Iteration 251/1000, Loss: 0.6905\n", "Iteration 252/1000, Loss: 0.6905\n", "Iteration 253/1000, Loss: 0.6904\n", "Iteration 254/1000, Loss: 0.6904\n", "Iteration 255/1000, Loss: 0.6904\n", "Iteration 256/1000, Loss: 0.6904\n", "Iteration 257/1000, Loss: 0.6903\n", "Iteration 258/1000, Loss: 0.6903\n", "Iteration 259/1000, Loss: 0.6903\n", "Iteration 260/1000, Loss: 0.6903\n", "Iteration 261/1000, Loss: 0.6902\n", "Iteration 262/1000, Loss: 0.6902\n", "Iteration 263/1000, Loss: 0.6902\n", "Iteration 264/1000, Loss: 0.6902\n", "Iteration 265/1000, Loss: 0.6902\n", "Iteration 266/1000, Loss: 0.6901\n", "Iteration 267/1000, Loss: 0.6901\n", "Iteration 268/1000, Loss: 0.6901\n", "Iteration 269/1000, Loss: 0.6901\n", "Iteration 270/1000, Loss: 0.6901\n", "Iteration 271/1000, Loss: 0.6900\n", "Iteration 272/1000, Loss: 0.6900\n", "Iteration 273/1000, Loss: 0.6900\n", "Iteration 274/1000, Loss: 0.6900\n", "Iteration 275/1000, Loss: 0.6900\n", "Iteration 276/1000, Loss: 0.6899\n", "Iteration 277/1000, Loss: 0.6899\n", "Iteration 278/1000, Loss: 0.6899\n", "Iteration 279/1000, Loss: 0.6899\n", "Iteration 280/1000, Loss: 0.6899\n", "Iteration 281/1000, Loss: 0.6899\n", "Iteration 282/1000, Loss: 0.6898\n", "Iteration 283/1000, Loss: 0.6898\n", "Iteration 284/1000, Loss: 0.6898\n", "Iteration 285/1000, Loss: 0.6898\n", "Iteration 286/1000, Loss: 0.6898\n", "Iteration 287/1000, Loss: 0.6898\n", "Iteration 288/1000, Loss: 0.6897\n", "Iteration 289/1000, Loss: 0.6897\n", "Iteration 290/1000, Loss: 0.6897\n", "Iteration 291/1000, Loss: 0.6897\n", "Iteration 292/1000, Loss: 0.6897\n", "Iteration 293/1000, Loss: 0.6897\n", "Iteration 294/1000, Loss: 0.6897\n", "Iteration 295/1000, Loss: 0.6896\n", "Iteration 296/1000, Loss: 0.6896\n", "Iteration 297/1000, Loss: 0.6896\n", "Iteration 298/1000, Loss: 0.6896\n", "Iteration 299/1000, Loss: 0.6896\n", "Iteration 300/1000, Loss: 0.6896\n", "Iteration 301/1000, Loss: 0.6896\n", "Iteration 302/1000, Loss: 0.6895\n", "Iteration 303/1000, Loss: 0.6895\n", "Iteration 304/1000, Loss: 0.6895\n", "Iteration 305/1000, Loss: 0.6895\n", "Iteration 306/1000, Loss: 0.6895\n", "Iteration 307/1000, Loss: 0.6895\n", "Iteration 308/1000, Loss: 0.6895\n", "Iteration 309/1000, Loss: 0.6894\n", "Iteration 310/1000, Loss: 0.6894\n", "Iteration 311/1000, Loss: 0.6894\n", "Iteration 312/1000, Loss: 0.6894\n", "Iteration 313/1000, Loss: 0.6894\n", "Iteration 314/1000, Loss: 0.6894\n", "Iteration 315/1000, Loss: 0.6894\n", "Iteration 316/1000, Loss: 0.6894\n", "Iteration 317/1000, Loss: 0.6894\n", "Iteration 318/1000, Loss: 0.6893\n", "Iteration 319/1000, Loss: 0.6893\n", "Iteration 320/1000, Loss: 0.6893\n", "Iteration 321/1000, Loss: 0.6893\n", "Iteration 322/1000, Loss: 0.6893\n", "Iteration 323/1000, Loss: 0.6893\n", "Iteration 324/1000, Loss: 0.6893\n", "Iteration 325/1000, Loss: 0.6893\n", "Iteration 326/1000, Loss: 0.6893\n", "Iteration 327/1000, Loss: 0.6892\n", "Iteration 328/1000, Loss: 0.6892\n", "Iteration 329/1000, Loss: 0.6892\n", "Iteration 330/1000, Loss: 0.6892\n", "Iteration 331/1000, Loss: 0.6892\n", "Iteration 332/1000, Loss: 0.6892\n", "Iteration 333/1000, Loss: 0.6892\n", "Iteration 334/1000, Loss: 0.6892\n", "Iteration 335/1000, Loss: 0.6892\n", "Iteration 336/1000, Loss: 0.6892\n", "Iteration 337/1000, Loss: 0.6892\n", "Iteration 338/1000, Loss: 0.6891\n", "Iteration 339/1000, Loss: 0.6891\n", "Iteration 340/1000, Loss: 0.6891\n", "Iteration 341/1000, Loss: 0.6891\n", "Iteration 342/1000, Loss: 0.6891\n", "Iteration 343/1000, Loss: 0.6891\n", "Iteration 344/1000, Loss: 0.6891\n", "Iteration 345/1000, Loss: 0.6891\n", "Iteration 346/1000, Loss: 0.6891\n", "Iteration 347/1000, Loss: 0.6891\n", "Iteration 348/1000, Loss: 0.6891\n", "Iteration 349/1000, Loss: 0.6890\n", "Iteration 350/1000, Loss: 0.6890\n", "Iteration 351/1000, Loss: 0.6890\n", "Iteration 352/1000, Loss: 0.6890\n", "Iteration 353/1000, Loss: 0.6890\n", "Iteration 354/1000, Loss: 0.6890\n", "Iteration 355/1000, Loss: 0.6890\n", "Iteration 356/1000, Loss: 0.6890\n", "Iteration 357/1000, Loss: 0.6890\n", "Iteration 358/1000, Loss: 0.6890\n", "Iteration 359/1000, Loss: 0.6890\n", "Iteration 360/1000, Loss: 0.6890\n", "Iteration 361/1000, Loss: 0.6890\n", "Iteration 362/1000, Loss: 0.6889\n", "Iteration 363/1000, Loss: 0.6889\n", "Iteration 364/1000, Loss: 0.6889\n", "Iteration 365/1000, Loss: 0.6889\n", "Iteration 366/1000, Loss: 0.6889\n", "Iteration 367/1000, Loss: 0.6889\n", "Iteration 368/1000, Loss: 0.6889\n", "Iteration 369/1000, Loss: 0.6889\n", "Iteration 370/1000, Loss: 0.6889\n", "Iteration 371/1000, Loss: 0.6889\n", "Iteration 372/1000, Loss: 0.6889\n", "Iteration 373/1000, Loss: 0.6889\n", "Iteration 374/1000, Loss: 0.6889\n", "Iteration 375/1000, Loss: 0.6889\n", "Iteration 376/1000, Loss: 0.6889\n", "Iteration 377/1000, Loss: 0.6888\n", "Iteration 378/1000, Loss: 0.6888\n", "Iteration 379/1000, Loss: 0.6888\n", "Iteration 380/1000, Loss: 0.6888\n", "Iteration 381/1000, Loss: 0.6888\n", "Iteration 382/1000, Loss: 0.6888\n", "Iteration 383/1000, Loss: 0.6888\n", "Iteration 384/1000, Loss: 0.6888\n", "Iteration 385/1000, Loss: 0.6888\n", "Iteration 386/1000, Loss: 0.6888\n", "Iteration 387/1000, Loss: 0.6888\n", "Iteration 388/1000, Loss: 0.6888\n", "Iteration 389/1000, Loss: 0.6888\n", "Iteration 390/1000, Loss: 0.6888\n", "Iteration 391/1000, Loss: 0.6888\n", "Iteration 392/1000, Loss: 0.6888\n", "Iteration 393/1000, Loss: 0.6887\n", "Iteration 394/1000, Loss: 0.6887\n", "Iteration 395/1000, Loss: 0.6887\n", "Iteration 396/1000, Loss: 0.6887\n", "Iteration 397/1000, Loss: 0.6887\n", "Iteration 398/1000, Loss: 0.6887\n", "Iteration 399/1000, Loss: 0.6887\n", "Iteration 400/1000, Loss: 0.6887\n", "Iteration 401/1000, Loss: 0.6887\n", "Iteration 402/1000, Loss: 0.6887\n", "Iteration 403/1000, Loss: 0.6887\n", "Iteration 404/1000, Loss: 0.6887\n", "Iteration 405/1000, Loss: 0.6887\n", "Iteration 406/1000, Loss: 0.6887\n", "Iteration 407/1000, Loss: 0.6887\n", "Iteration 408/1000, Loss: 0.6887\n", "Iteration 409/1000, Loss: 0.6887\n", "Iteration 410/1000, Loss: 0.6887\n", "Iteration 411/1000, Loss: 0.6887\n", "Iteration 412/1000, Loss: 0.6887\n", "Iteration 413/1000, Loss: 0.6886\n", "Iteration 414/1000, Loss: 0.6886\n", "Iteration 415/1000, Loss: 0.6886\n", "Iteration 416/1000, Loss: 0.6886\n", "Iteration 417/1000, Loss: 0.6886\n", "Iteration 418/1000, Loss: 0.6886\n", "Iteration 419/1000, Loss: 0.6886\n", "Iteration 420/1000, Loss: 0.6886\n", "Iteration 421/1000, Loss: 0.6886\n", "Iteration 422/1000, Loss: 0.6886\n", "Iteration 423/1000, Loss: 0.6886\n", "Iteration 424/1000, Loss: 0.6886\n", "Iteration 425/1000, Loss: 0.6886\n", "Iteration 426/1000, Loss: 0.6886\n", "Iteration 427/1000, Loss: 0.6886\n", "Iteration 428/1000, Loss: 0.6886\n", "Iteration 429/1000, Loss: 0.6886\n", "Iteration 430/1000, Loss: 0.6886\n", "Iteration 431/1000, Loss: 0.6886\n", "Iteration 432/1000, Loss: 0.6886\n", "Iteration 433/1000, Loss: 0.6886\n", "Iteration 434/1000, Loss: 0.6886\n", "Iteration 435/1000, Loss: 0.6885\n", "Iteration 436/1000, Loss: 0.6885\n", "Iteration 437/1000, Loss: 0.6885\n", "Iteration 438/1000, Loss: 0.6885\n", "Iteration 439/1000, Loss: 0.6885\n", "Iteration 440/1000, Loss: 0.6885\n", "Iteration 441/1000, Loss: 0.6885\n", "Iteration 442/1000, Loss: 0.6885\n", "Iteration 443/1000, Loss: 0.6885\n", "Iteration 444/1000, Loss: 0.6885\n", "Iteration 445/1000, Loss: 0.6885\n", "Iteration 446/1000, Loss: 0.6885\n", "Iteration 447/1000, Loss: 0.6885\n", "Iteration 448/1000, Loss: 0.6885\n", "Iteration 449/1000, Loss: 0.6885\n", "Iteration 450/1000, Loss: 0.6885\n", "Iteration 451/1000, Loss: 0.6885\n", "Iteration 452/1000, Loss: 0.6885\n", "Iteration 453/1000, Loss: 0.6885\n", "Iteration 454/1000, Loss: 0.6885\n", "Iteration 455/1000, Loss: 0.6885\n", "Iteration 456/1000, Loss: 0.6885\n", "Iteration 457/1000, Loss: 0.6885\n", "Iteration 458/1000, Loss: 0.6885\n", "Iteration 459/1000, Loss: 0.6885\n", "Iteration 460/1000, Loss: 0.6885\n", "Iteration 461/1000, Loss: 0.6885\n", "Iteration 462/1000, Loss: 0.6884\n", "Iteration 463/1000, Loss: 0.6884\n", "Iteration 464/1000, Loss: 0.6884\n", "Iteration 465/1000, Loss: 0.6884\n", "Iteration 466/1000, Loss: 0.6884\n", "Iteration 467/1000, Loss: 0.6884\n", "Iteration 468/1000, Loss: 0.6884\n", "Iteration 469/1000, Loss: 0.6884\n", "Iteration 470/1000, Loss: 0.6884\n", "Iteration 471/1000, Loss: 0.6884\n", "Iteration 472/1000, Loss: 0.6884\n", "Iteration 473/1000, Loss: 0.6884\n", "Iteration 474/1000, Loss: 0.6884\n", "Iteration 475/1000, Loss: 0.6884\n", "Iteration 476/1000, Loss: 0.6884\n", "Iteration 477/1000, Loss: 0.6884\n", "Iteration 478/1000, Loss: 0.6884\n", "Iteration 479/1000, Loss: 0.6884\n", "Iteration 480/1000, Loss: 0.6884\n", "Iteration 481/1000, Loss: 0.6884\n", "Iteration 482/1000, Loss: 0.6884\n", "Iteration 483/1000, Loss: 0.6884\n", "Iteration 484/1000, Loss: 0.6884\n", "Iteration 485/1000, Loss: 0.6884\n", "Iteration 486/1000, Loss: 0.6884\n", "Iteration 487/1000, Loss: 0.6884\n", "Iteration 488/1000, Loss: 0.6884\n", "Iteration 489/1000, Loss: 0.6884\n", "Iteration 490/1000, Loss: 0.6884\n", "Iteration 491/1000, Loss: 0.6884\n", "Iteration 492/1000, Loss: 0.6884\n", "Iteration 493/1000, Loss: 0.6884\n", "Iteration 494/1000, Loss: 0.6883\n", "Iteration 495/1000, Loss: 0.6883\n", "Iteration 496/1000, Loss: 0.6883\n", "Iteration 497/1000, Loss: 0.6883\n", "Iteration 498/1000, Loss: 0.6883\n", "Iteration 499/1000, Loss: 0.6883\n", "Iteration 500/1000, Loss: 0.6883\n", "Iteration 501/1000, Loss: 0.6883\n", "Iteration 502/1000, Loss: 0.6883\n", "Iteration 503/1000, Loss: 0.6883\n", "Iteration 504/1000, Loss: 0.6883\n", "Iteration 505/1000, Loss: 0.6883\n", "Iteration 506/1000, Loss: 0.6883\n", "Iteration 507/1000, Loss: 0.6883\n", "Iteration 508/1000, Loss: 0.6883\n", "Iteration 509/1000, Loss: 0.6883\n", "Iteration 510/1000, Loss: 0.6883\n", "Iteration 511/1000, Loss: 0.6883\n", "Iteration 512/1000, Loss: 0.6883\n", "Iteration 513/1000, Loss: 0.6883\n", "Iteration 514/1000, Loss: 0.6883\n", "Iteration 515/1000, Loss: 0.6883\n", "Iteration 516/1000, Loss: 0.6883\n", "Iteration 517/1000, Loss: 0.6883\n", "Iteration 518/1000, Loss: 0.6883\n", "Iteration 519/1000, Loss: 0.6883\n", "Iteration 520/1000, Loss: 0.6883\n", "Iteration 521/1000, Loss: 0.6883\n", "Iteration 522/1000, Loss: 0.6883\n", "Iteration 523/1000, Loss: 0.6883\n", "Iteration 524/1000, Loss: 0.6883\n", "Iteration 525/1000, Loss: 0.6883\n", "Iteration 526/1000, Loss: 0.6883\n", "Iteration 527/1000, Loss: 0.6883\n", "Iteration 528/1000, Loss: 0.6883\n", "Iteration 529/1000, Loss: 0.6883\n", "Iteration 530/1000, Loss: 0.6883\n", "Iteration 531/1000, Loss: 0.6883\n", "Iteration 532/1000, Loss: 0.6883\n", "Iteration 533/1000, Loss: 0.6882\n", "Iteration 534/1000, Loss: 0.6882\n", "Iteration 535/1000, Loss: 0.6882\n", "Iteration 536/1000, Loss: 0.6882\n", "Iteration 537/1000, Loss: 0.6882\n", "Iteration 538/1000, Loss: 0.6882\n", "Iteration 539/1000, Loss: 0.6882\n", "Iteration 540/1000, Loss: 0.6882\n", "Iteration 541/1000, Loss: 0.6882\n", "Iteration 542/1000, Loss: 0.6882\n", "Iteration 543/1000, Loss: 0.6882\n", "Iteration 544/1000, Loss: 0.6882\n", "Iteration 545/1000, Loss: 0.6882\n", "Iteration 546/1000, Loss: 0.6882\n", "Iteration 547/1000, Loss: 0.6882\n", "Iteration 548/1000, Loss: 0.6882\n", "Iteration 549/1000, Loss: 0.6882\n", "Iteration 550/1000, Loss: 0.6882\n", "Iteration 551/1000, Loss: 0.6882\n", "Iteration 552/1000, Loss: 0.6882\n", "Iteration 553/1000, Loss: 0.6882\n", "Iteration 554/1000, Loss: 0.6882\n", "Iteration 555/1000, Loss: 0.6882\n", "Iteration 556/1000, Loss: 0.6882\n", "Iteration 557/1000, Loss: 0.6882\n", "Iteration 558/1000, Loss: 0.6882\n", "Iteration 559/1000, Loss: 0.6882\n", "Iteration 560/1000, Loss: 0.6882\n", "Iteration 561/1000, Loss: 0.6882\n", "Iteration 562/1000, Loss: 0.6882\n", "Iteration 563/1000, Loss: 0.6882\n", "Iteration 564/1000, Loss: 0.6882\n", "Iteration 565/1000, Loss: 0.6882\n", "Iteration 566/1000, Loss: 0.6882\n", "Iteration 567/1000, Loss: 0.6882\n", "Iteration 568/1000, Loss: 0.6882\n", "Iteration 569/1000, Loss: 0.6882\n", "Iteration 570/1000, Loss: 0.6882\n", "Iteration 571/1000, Loss: 0.6882\n", "Iteration 572/1000, Loss: 0.6882\n", "Iteration 573/1000, Loss: 0.6882\n", "Iteration 574/1000, Loss: 0.6882\n", "Iteration 575/1000, Loss: 0.6882\n", "Iteration 576/1000, Loss: 0.6882\n", "Iteration 577/1000, Loss: 0.6882\n", "Iteration 578/1000, Loss: 0.6882\n", "Iteration 579/1000, Loss: 0.6882\n", "Iteration 580/1000, Loss: 0.6882\n", "Iteration 581/1000, Loss: 0.6882\n", "Iteration 582/1000, Loss: 0.6881\n", "Iteration 583/1000, Loss: 0.6881\n", "Iteration 584/1000, Loss: 0.6881\n", "Iteration 585/1000, Loss: 0.6881\n", "Iteration 586/1000, Loss: 0.6881\n", "Iteration 587/1000, Loss: 0.6881\n", "Iteration 588/1000, Loss: 0.6881\n", "Iteration 589/1000, Loss: 0.6881\n", "Iteration 590/1000, Loss: 0.6881\n", "Iteration 591/1000, Loss: 0.6881\n", "Iteration 592/1000, Loss: 0.6881\n", "Iteration 593/1000, Loss: 0.6881\n", "Iteration 594/1000, Loss: 0.6881\n", "Iteration 595/1000, Loss: 0.6881\n", "Iteration 596/1000, Loss: 0.6881\n", "Iteration 597/1000, Loss: 0.6881\n", "Iteration 598/1000, Loss: 0.6881\n", "Iteration 599/1000, Loss: 0.6881\n", "Iteration 600/1000, Loss: 0.6881\n", "Iteration 601/1000, Loss: 0.6881\n", "Iteration 602/1000, Loss: 0.6881\n", "Iteration 603/1000, Loss: 0.6881\n", "Iteration 604/1000, Loss: 0.6881\n", "Iteration 605/1000, Loss: 0.6881\n", "Iteration 606/1000, Loss: 0.6881\n", "Iteration 607/1000, Loss: 0.6881\n", "Iteration 608/1000, Loss: 0.6881\n", "Iteration 609/1000, Loss: 0.6881\n", "Iteration 610/1000, Loss: 0.6881\n", "Iteration 611/1000, Loss: 0.6881\n", "Iteration 612/1000, Loss: 0.6881\n", "Iteration 613/1000, Loss: 0.6881\n", "Iteration 614/1000, Loss: 0.6881\n", "Iteration 615/1000, Loss: 0.6881\n", "Iteration 616/1000, Loss: 0.6881\n", "Iteration 617/1000, Loss: 0.6881\n", "Iteration 618/1000, Loss: 0.6881\n", "Iteration 619/1000, Loss: 0.6881\n", "Iteration 620/1000, Loss: 0.6881\n", "Iteration 621/1000, Loss: 0.6881\n", "Iteration 622/1000, Loss: 0.6881\n", "Iteration 623/1000, Loss: 0.6881\n", "Iteration 624/1000, Loss: 0.6881\n", "Iteration 625/1000, Loss: 0.6881\n", "Iteration 626/1000, Loss: 0.6881\n", "Iteration 627/1000, Loss: 0.6881\n", "Iteration 628/1000, Loss: 0.6881\n", "Iteration 629/1000, Loss: 0.6881\n", "Iteration 630/1000, Loss: 0.6881\n", "Iteration 631/1000, Loss: 0.6881\n", "Iteration 632/1000, Loss: 0.6881\n", "Iteration 633/1000, Loss: 0.6881\n", "Iteration 634/1000, Loss: 0.6881\n", "Iteration 635/1000, Loss: 0.6881\n", "Iteration 636/1000, Loss: 0.6881\n", "Iteration 637/1000, Loss: 0.6881\n", "Iteration 638/1000, Loss: 0.6881\n", "Iteration 639/1000, Loss: 0.6881\n", "Iteration 640/1000, Loss: 0.6881\n", "Iteration 641/1000, Loss: 0.6881\n", "Iteration 642/1000, Loss: 0.6881\n", "Iteration 643/1000, Loss: 0.6880\n", "Iteration 644/1000, Loss: 0.6880\n", "Iteration 645/1000, Loss: 0.6880\n", "Iteration 646/1000, Loss: 0.6880\n", "Iteration 647/1000, Loss: 0.6880\n", "Iteration 648/1000, Loss: 0.6880\n", "Iteration 649/1000, Loss: 0.6880\n", "Iteration 650/1000, Loss: 0.6880\n", "Iteration 651/1000, Loss: 0.6880\n", "Iteration 652/1000, Loss: 0.6880\n", "Iteration 653/1000, Loss: 0.6880\n", "Iteration 654/1000, Loss: 0.6880\n", "Iteration 655/1000, Loss: 0.6880\n", "Iteration 656/1000, Loss: 0.6880\n", "Iteration 657/1000, Loss: 0.6880\n", "Iteration 658/1000, Loss: 0.6880\n", "Iteration 659/1000, Loss: 0.6880\n", "Iteration 660/1000, Loss: 0.6880\n", "Iteration 661/1000, Loss: 0.6880\n", "Iteration 662/1000, Loss: 0.6880\n", "Iteration 663/1000, Loss: 0.6880\n", "Iteration 664/1000, Loss: 0.6880\n", "Iteration 665/1000, Loss: 0.6880\n", "Iteration 666/1000, Loss: 0.6880\n", "Iteration 667/1000, Loss: 0.6880\n", "Iteration 668/1000, Loss: 0.6880\n", "Iteration 669/1000, Loss: 0.6880\n", "Iteration 670/1000, Loss: 0.6880\n", "Iteration 671/1000, Loss: 0.6880\n", "Iteration 672/1000, Loss: 0.6880\n", "Iteration 673/1000, Loss: 0.6880\n", "Iteration 674/1000, Loss: 0.6880\n", "Iteration 675/1000, Loss: 0.6880\n", "Iteration 676/1000, Loss: 0.6880\n", "Iteration 677/1000, Loss: 0.6880\n", "Iteration 678/1000, Loss: 0.6880\n", "Iteration 679/1000, Loss: 0.6880\n", "Iteration 680/1000, Loss: 0.6880\n", "Iteration 681/1000, Loss: 0.6880\n", "Iteration 682/1000, Loss: 0.6880\n", "Iteration 683/1000, Loss: 0.6880\n", "Iteration 684/1000, Loss: 0.6880\n", "Iteration 685/1000, Loss: 0.6880\n", "Iteration 686/1000, Loss: 0.6880\n", "Iteration 687/1000, Loss: 0.6880\n", "Iteration 688/1000, Loss: 0.6880\n", "Iteration 689/1000, Loss: 0.6880\n", "Iteration 690/1000, Loss: 0.6880\n", "Iteration 691/1000, Loss: 0.6880\n", "Iteration 692/1000, Loss: 0.6880\n", "Iteration 693/1000, Loss: 0.6880\n", "Iteration 694/1000, Loss: 0.6880\n", "Iteration 695/1000, Loss: 0.6880\n", "Iteration 696/1000, Loss: 0.6880\n", "Iteration 697/1000, Loss: 0.6880\n", "Iteration 698/1000, Loss: 0.6880\n", "Iteration 699/1000, Loss: 0.6880\n", "Iteration 700/1000, Loss: 0.6880\n", "Iteration 701/1000, Loss: 0.6880\n", "Iteration 702/1000, Loss: 0.6880\n", "Iteration 703/1000, Loss: 0.6880\n", "Iteration 704/1000, Loss: 0.6880\n", "Iteration 705/1000, Loss: 0.6880\n", "Iteration 706/1000, Loss: 0.6880\n", "Iteration 707/1000, Loss: 0.6880\n", "Iteration 708/1000, Loss: 0.6880\n", "Iteration 709/1000, Loss: 0.6880\n", "Iteration 710/1000, Loss: 0.6880\n", "Iteration 711/1000, Loss: 0.6880\n", "Iteration 712/1000, Loss: 0.6880\n", "Iteration 713/1000, Loss: 0.6880\n", "Iteration 714/1000, Loss: 0.6880\n", "Iteration 715/1000, Loss: 0.6880\n", "Iteration 716/1000, Loss: 0.6880\n", "Iteration 717/1000, Loss: 0.6880\n", "Iteration 718/1000, Loss: 0.6880\n", "Iteration 719/1000, Loss: 0.6880\n", "Iteration 720/1000, Loss: 0.6880\n", "Iteration 721/1000, Loss: 0.6880\n", "Iteration 722/1000, Loss: 0.6879\n", "Iteration 723/1000, Loss: 0.6879\n", "Iteration 724/1000, Loss: 0.6879\n", "Iteration 725/1000, Loss: 0.6879\n", "Iteration 726/1000, Loss: 0.6879\n", "Iteration 727/1000, Loss: 0.6879\n", "Iteration 728/1000, Loss: 0.6879\n", "Iteration 729/1000, Loss: 0.6879\n", "Iteration 730/1000, Loss: 0.6879\n", "Iteration 731/1000, Loss: 0.6879\n", "Iteration 732/1000, Loss: 0.6879\n", "Iteration 733/1000, Loss: 0.6879\n", "Iteration 734/1000, Loss: 0.6879\n", "Iteration 735/1000, Loss: 0.6879\n", "Iteration 736/1000, Loss: 0.6879\n", "Iteration 737/1000, Loss: 0.6879\n", "Iteration 738/1000, Loss: 0.6879\n", "Iteration 739/1000, Loss: 0.6879\n", "Iteration 740/1000, Loss: 0.6879\n", "Iteration 741/1000, Loss: 0.6879\n", "Iteration 742/1000, Loss: 0.6879\n", "Iteration 743/1000, Loss: 0.6879\n", "Iteration 744/1000, Loss: 0.6879\n", "Iteration 745/1000, Loss: 0.6879\n", "Iteration 746/1000, Loss: 0.6879\n", "Iteration 747/1000, Loss: 0.6879\n", "Iteration 748/1000, Loss: 0.6879\n", "Iteration 749/1000, Loss: 0.6879\n", "Iteration 750/1000, Loss: 0.6879\n", "Iteration 751/1000, Loss: 0.6879\n", "Iteration 752/1000, Loss: 0.6879\n", "Iteration 753/1000, Loss: 0.6879\n", "Iteration 754/1000, Loss: 0.6879\n", "Iteration 755/1000, Loss: 0.6879\n", "Iteration 756/1000, Loss: 0.6879\n", "Iteration 757/1000, Loss: 0.6879\n", "Iteration 758/1000, Loss: 0.6879\n", "Iteration 759/1000, Loss: 0.6879\n", "Iteration 760/1000, Loss: 0.6879\n", "Iteration 761/1000, Loss: 0.6879\n", "Iteration 762/1000, Loss: 0.6879\n", "Iteration 763/1000, Loss: 0.6879\n", "Iteration 764/1000, Loss: 0.6879\n", "Iteration 765/1000, Loss: 0.6879\n", "Iteration 766/1000, Loss: 0.6879\n", "Iteration 767/1000, Loss: 0.6879\n", "Iteration 768/1000, Loss: 0.6879\n", "Iteration 769/1000, Loss: 0.6879\n", "Iteration 770/1000, Loss: 0.6879\n", "Iteration 771/1000, Loss: 0.6879\n", "Iteration 772/1000, Loss: 0.6879\n", "Iteration 773/1000, Loss: 0.6879\n", "Iteration 774/1000, Loss: 0.6879\n", "Iteration 775/1000, Loss: 0.6879\n", "Iteration 776/1000, Loss: 0.6879\n", "Iteration 777/1000, Loss: 0.6879\n", "Iteration 778/1000, Loss: 0.6879\n", "Iteration 779/1000, Loss: 0.6879\n", "Iteration 780/1000, Loss: 0.6879\n", "Iteration 781/1000, Loss: 0.6879\n", "Iteration 782/1000, Loss: 0.6879\n", "Iteration 783/1000, Loss: 0.6879\n", "Iteration 784/1000, Loss: 0.6879\n", "Iteration 785/1000, Loss: 0.6879\n", "Iteration 786/1000, Loss: 0.6879\n", "Iteration 787/1000, Loss: 0.6879\n", "Iteration 788/1000, Loss: 0.6879\n", "Iteration 789/1000, Loss: 0.6879\n", "Iteration 790/1000, Loss: 0.6879\n", "Iteration 791/1000, Loss: 0.6879\n", "Iteration 792/1000, Loss: 0.6879\n", "Iteration 793/1000, Loss: 0.6879\n", "Iteration 794/1000, Loss: 0.6879\n", "Iteration 795/1000, Loss: 0.6879\n", "Iteration 796/1000, Loss: 0.6879\n", "Iteration 797/1000, Loss: 0.6879\n", "Iteration 798/1000, Loss: 0.6879\n", "Iteration 799/1000, Loss: 0.6879\n", "Iteration 800/1000, Loss: 0.6879\n", "Iteration 801/1000, Loss: 0.6879\n", "Iteration 802/1000, Loss: 0.6879\n", "Iteration 803/1000, Loss: 0.6879\n", "Iteration 804/1000, Loss: 0.6879\n", "Iteration 805/1000, Loss: 0.6879\n", "Iteration 806/1000, Loss: 0.6879\n", "Iteration 807/1000, Loss: 0.6879\n", "Iteration 808/1000, Loss: 0.6879\n", "Iteration 809/1000, Loss: 0.6879\n", "Iteration 810/1000, Loss: 0.6879\n", "Iteration 811/1000, Loss: 0.6879\n", "Iteration 812/1000, Loss: 0.6879\n", "Iteration 813/1000, Loss: 0.6879\n", "Iteration 814/1000, Loss: 0.6879\n", "Iteration 815/1000, Loss: 0.6879\n", "Iteration 816/1000, Loss: 0.6879\n", "Iteration 817/1000, Loss: 0.6879\n", "Iteration 818/1000, Loss: 0.6879\n", "Iteration 819/1000, Loss: 0.6879\n", "Iteration 820/1000, Loss: 0.6879\n", "Iteration 821/1000, Loss: 0.6878\n", "Iteration 822/1000, Loss: 0.6878\n", "Iteration 823/1000, Loss: 0.6878\n", "Iteration 824/1000, Loss: 0.6878\n", "Iteration 825/1000, Loss: 0.6878\n", "Iteration 826/1000, Loss: 0.6878\n", "Iteration 827/1000, Loss: 0.6878\n", "Iteration 828/1000, Loss: 0.6878\n", "Iteration 829/1000, Loss: 0.6878\n", "Iteration 830/1000, Loss: 0.6878\n", "Iteration 831/1000, Loss: 0.6878\n", "Iteration 832/1000, Loss: 0.6878\n", "Iteration 833/1000, Loss: 0.6878\n", "Iteration 834/1000, Loss: 0.6878\n", "Iteration 835/1000, Loss: 0.6878\n", "Iteration 836/1000, Loss: 0.6878\n", "Iteration 837/1000, Loss: 0.6878\n", "Iteration 838/1000, Loss: 0.6878\n", "Iteration 839/1000, Loss: 0.6878\n", "Iteration 840/1000, Loss: 0.6878\n", "Iteration 841/1000, Loss: 0.6878\n", "Iteration 842/1000, Loss: 0.6878\n", "Iteration 843/1000, Loss: 0.6878\n", "Iteration 844/1000, Loss: 0.6878\n", "Iteration 845/1000, Loss: 0.6878\n", "Iteration 846/1000, Loss: 0.6878\n", "Iteration 847/1000, Loss: 0.6878\n", "Iteration 848/1000, Loss: 0.6878\n", "Iteration 849/1000, Loss: 0.6878\n", "Iteration 850/1000, Loss: 0.6878\n", "Iteration 851/1000, Loss: 0.6878\n", "Iteration 852/1000, Loss: 0.6878\n", "Iteration 853/1000, Loss: 0.6878\n", "Iteration 854/1000, Loss: 0.6878\n", "Iteration 855/1000, Loss: 0.6878\n", "Iteration 856/1000, Loss: 0.6878\n", "Iteration 857/1000, Loss: 0.6878\n", "Iteration 858/1000, Loss: 0.6878\n", "Iteration 859/1000, Loss: 0.6878\n", "Iteration 860/1000, Loss: 0.6878\n", "Iteration 861/1000, Loss: 0.6878\n", "Iteration 862/1000, Loss: 0.6878\n", "Iteration 863/1000, Loss: 0.6878\n", "Iteration 864/1000, Loss: 0.6878\n", "Iteration 865/1000, Loss: 0.6878\n", "Iteration 866/1000, Loss: 0.6878\n", "Iteration 867/1000, Loss: 0.6878\n", "Iteration 868/1000, Loss: 0.6878\n", "Iteration 869/1000, Loss: 0.6878\n", "Iteration 870/1000, Loss: 0.6878\n", "Iteration 871/1000, Loss: 0.6878\n", "Iteration 872/1000, Loss: 0.6878\n", "Iteration 873/1000, Loss: 0.6878\n", "Iteration 874/1000, Loss: 0.6878\n", "Iteration 875/1000, Loss: 0.6878\n", "Iteration 876/1000, Loss: 0.6878\n", "Iteration 877/1000, Loss: 0.6878\n", "Iteration 878/1000, Loss: 0.6878\n", "Iteration 879/1000, Loss: 0.6878\n", "Iteration 880/1000, Loss: 0.6878\n", "Iteration 881/1000, Loss: 0.6878\n", "Iteration 882/1000, Loss: 0.6878\n", "Iteration 883/1000, Loss: 0.6878\n", "Iteration 884/1000, Loss: 0.6878\n", "Iteration 885/1000, Loss: 0.6878\n", "Iteration 886/1000, Loss: 0.6878\n", "Iteration 887/1000, Loss: 0.6878\n", "Iteration 888/1000, Loss: 0.6878\n", "Iteration 889/1000, Loss: 0.6878\n", "Iteration 890/1000, Loss: 0.6878\n", "Iteration 891/1000, Loss: 0.6878\n", "Iteration 892/1000, Loss: 0.6878\n", "Iteration 893/1000, Loss: 0.6878\n", "Iteration 894/1000, Loss: 0.6878\n", "Iteration 895/1000, Loss: 0.6878\n", "Iteration 896/1000, Loss: 0.6878\n", "Iteration 897/1000, Loss: 0.6878\n", "Iteration 898/1000, Loss: 0.6878\n", "Iteration 899/1000, Loss: 0.6878\n", "Iteration 900/1000, Loss: 0.6878\n", "Iteration 901/1000, Loss: 0.6878\n", "Iteration 902/1000, Loss: 0.6878\n", "Iteration 903/1000, Loss: 0.6878\n", "Iteration 904/1000, Loss: 0.6878\n", "Iteration 905/1000, Loss: 0.6878\n", "Iteration 906/1000, Loss: 0.6878\n", "Iteration 907/1000, Loss: 0.6878\n", "Iteration 908/1000, Loss: 0.6878\n", "Iteration 909/1000, Loss: 0.6878\n", "Iteration 910/1000, Loss: 0.6878\n", "Iteration 911/1000, Loss: 0.6878\n", "Iteration 912/1000, Loss: 0.6878\n", "Iteration 913/1000, Loss: 0.6878\n", "Iteration 914/1000, Loss: 0.6878\n", "Iteration 915/1000, Loss: 0.6878\n", "Iteration 916/1000, Loss: 0.6878\n", "Iteration 917/1000, Loss: 0.6878\n", "Iteration 918/1000, Loss: 0.6878\n", "Iteration 919/1000, Loss: 0.6878\n", "Iteration 920/1000, Loss: 0.6878\n", "Iteration 921/1000, Loss: 0.6878\n", "Iteration 922/1000, Loss: 0.6878\n", "Iteration 923/1000, Loss: 0.6878\n", "Iteration 924/1000, Loss: 0.6878\n", "Iteration 925/1000, Loss: 0.6878\n", "Iteration 926/1000, Loss: 0.6878\n", "Iteration 927/1000, Loss: 0.6878\n", "Iteration 928/1000, Loss: 0.6878\n", "Iteration 929/1000, Loss: 0.6878\n", "Iteration 930/1000, Loss: 0.6878\n", "Iteration 931/1000, Loss: 0.6878\n", "Iteration 932/1000, Loss: 0.6878\n", "Iteration 933/1000, Loss: 0.6878\n", "Iteration 934/1000, Loss: 0.6878\n", "Iteration 935/1000, Loss: 0.6878\n", "Iteration 936/1000, Loss: 0.6878\n", "Iteration 937/1000, Loss: 0.6878\n", "Iteration 938/1000, Loss: 0.6877\n", "Iteration 939/1000, Loss: 0.6877\n", "Iteration 940/1000, Loss: 0.6877\n", "Iteration 941/1000, Loss: 0.6877\n", "Iteration 942/1000, Loss: 0.6877\n", "Iteration 943/1000, Loss: 0.6877\n", "Iteration 944/1000, Loss: 0.6877\n", "Iteration 945/1000, Loss: 0.6877\n", "Iteration 946/1000, Loss: 0.6877\n", "Iteration 947/1000, Loss: 0.6877\n", "Iteration 948/1000, Loss: 0.6877\n", "Iteration 949/1000, Loss: 0.6877\n", "Iteration 950/1000, Loss: 0.6877\n", "Iteration 951/1000, Loss: 0.6877\n", "Iteration 952/1000, Loss: 0.6877\n", "Iteration 953/1000, Loss: 0.6877\n", "Iteration 954/1000, Loss: 0.6877\n", "Iteration 955/1000, Loss: 0.6877\n", "Iteration 956/1000, Loss: 0.6877\n", "Iteration 957/1000, Loss: 0.6877\n", "Iteration 958/1000, Loss: 0.6877\n", "Iteration 959/1000, Loss: 0.6877\n", "Iteration 960/1000, Loss: 0.6877\n", "Iteration 961/1000, Loss: 0.6877\n", "Iteration 962/1000, Loss: 0.6877\n", "Iteration 963/1000, Loss: 0.6877\n", "Iteration 964/1000, Loss: 0.6877\n", "Iteration 965/1000, Loss: 0.6877\n", "Iteration 966/1000, Loss: 0.6877\n", "Iteration 967/1000, Loss: 0.6877\n", "Iteration 968/1000, Loss: 0.6877\n", "Iteration 969/1000, Loss: 0.6877\n", "Iteration 970/1000, Loss: 0.6877\n", "Iteration 971/1000, Loss: 0.6877\n", "Iteration 972/1000, Loss: 0.6877\n", "Iteration 973/1000, Loss: 0.6877\n", "Iteration 974/1000, Loss: 0.6877\n", "Iteration 975/1000, Loss: 0.6877\n", "Iteration 976/1000, Loss: 0.6877\n", "Iteration 977/1000, Loss: 0.6877\n", "Iteration 978/1000, Loss: 0.6877\n", "Iteration 979/1000, Loss: 0.6877\n", "Iteration 980/1000, Loss: 0.6877\n", "Iteration 981/1000, Loss: 0.6877\n", "Iteration 982/1000, Loss: 0.6877\n", "Iteration 983/1000, Loss: 0.6877\n", "Iteration 984/1000, Loss: 0.6877\n", "Iteration 985/1000, Loss: 0.6877\n", "Iteration 986/1000, Loss: 0.6877\n", "Iteration 987/1000, Loss: 0.6877\n", "Iteration 988/1000, Loss: 0.6877\n", "Iteration 989/1000, Loss: 0.6877\n", "Iteration 990/1000, Loss: 0.6877\n", "Iteration 991/1000, Loss: 0.6877\n", "Iteration 992/1000, Loss: 0.6877\n", "Iteration 993/1000, Loss: 0.6877\n", "Iteration 994/1000, Loss: 0.6877\n", "Iteration 995/1000, Loss: 0.6877\n", "Iteration 996/1000, Loss: 0.6877\n", "Iteration 997/1000, Loss: 0.6877\n", "Iteration 998/1000, Loss: 0.6877\n", "Iteration 999/1000, Loss: 0.6877\n", "Iteration 1000/1000, Loss: 0.6877\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAHHCAYAAABnS/bqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABb2UlEQVR4nO3dd3xTVf8H8M9N0j0pXRQ6oKyWVkCWbIQqVmSqDJFRZCjlQdaDPI8/BVSG+IgiIIgKqGwEQXFAKciSTYtsCpRV6KJ70JGc3x8loaEFG0h60/Tzfr36anPvyc03lzb5cM65J5IQQoCIiIiIjE4hdwFERERElopBi4iIiMhEGLSIiIiITIRBi4iIiMhEGLSIiIiITIRBi4iIiMhEGLSIiIiITIRBi4iIiMhEGLSIiIiITIRBi6ql4cOHIyAgQG+bJEmYMWOGLPUQGcOMGTMgSZLcZRjF1atXIUkSVq5cafB9V65cCUmScPXqVaPXRWX98ccfcHR0REpKitylmCUGLapU8fHxGDduHBo2bAh7e3vY29sjODgYkZGR+Pvvv+Uuz+TWrFmDzz//vMLtAwICIEkSJEmCQqGAq6srQkNDMXr0aBw+fNh0hcro1q1bmDFjBmJjYyvUXvumeuzYMdMWZgLaMKH9UiqV8PPzQ9++fSv8/OnxaYOp9sve3h5+fn7o2bMnVqxYgYKCArlLlE1eXh4WL16M559/HrVq1YKTkxOaN2+OJUuWQK1W67V94YUXUL9+fcyZM0emas2bSu4CqPrYtm0bBgwYAJVKhcGDB6Np06ZQKBQ4f/48Nm/ejCVLliA+Ph7+/v6y1Jefnw+VyrR/EmvWrMHp06cxYcKECt+nWbNmmDx5MgAgOzsb586dw8aNG/H1119j4sSJmD9/vomqlcetW7cwc+ZMBAQEoFmzZnKXUykGDRqEF198EWq1GufOncOSJUvw+++/49ChQ9XmHDzI398f+fn5sLKyMvljLVmyBI6OjigoKEBCQgK2b9+OESNG4PPPP8e2bdvg6+tr8hrMzZUrV/Cvf/0L3bp1w6RJk+Ds7Izt27dj7NixOHToEL777ju99mPGjMGUKVMwc+ZMODk5yVS1mRJEleDSpUvCwcFBBAUFiVu3bpXZX1RUJBYsWCCuX7/+yOPk5OQYpZ5hw4YJf39/oxzLED169DDocf39/UWPHj3KbM/LyxN9+vQRAMSXX35pxArld/ToUQFArFixokLtV6xYIQCIo0ePmrYwE4iPjxcAxCeffKK3/eeffxYAxOjRow063vTp0wVf1u//TsTHxz+ynfZ8paSklNm3atUqoVAoRJs2bUxU5cOp1WqRn59f6Y9bWkpKijh9+nSZ7REREQKAiIuL09uelJQklEql+PbbbyurxCqDQ4dUKebNm4fc3FysWLECtWrVKrNfpVJh/Pjxev9zHD58OBwdHXH58mW8+OKLcHJywuDBgwEA+/btw6uvvgo/Pz/Y2NjA19cXEydORH5+fpljb9myBSEhIbC1tUVISAh++umncmssb45WQkICRowYAS8vL9jY2KBJkyZYvny5Xps///wTkiRhw4YNmDVrFurUqQNbW1t069YNly5d0rXr0qULfv31V1y7dk03VPHgPLGKsrOzww8//AA3NzfMmjULQgjdPo1Gg88//xxNmjSBra0tvLy8MGbMGKSnp+sd49ixY+jevTvc3d1hZ2eHunXrYsSIEXptNBoNFixYgNDQUNja2sLDwwMvvPBCmWG6VatWoUWLFrCzs4ObmxsGDhyIGzdu6LXp0qULQkJCcPbsWTz77LOwt7dH7dq1MW/ePL1z2apVKwBARESE7jw9zjydB8XExCA8PBzOzs5wdHREt27dcOjQIb02RUVFmDlzJho0aABbW1vUrFkTHTp0QFRUlK5NYmIiIiIiUKdOHdjY2KBWrVro3bu3UecDde3aFUDJULvWxo0bdefY3d0dr7/+OhISEh55nM6dO6Np06bl7mvUqBG6d+8O4P4Q5v/+9z8sW7YMgYGBsLGxQatWrXD06NEy9921axc6duwIBwcHuLq6onfv3jh37pxeG+2w3MWLF/H666/DxcUFHh4eeO+99yCEwI0bN9C7d284OzvD29sbn376qd79y5uj9ffff2P48OGoV68ebG1t4e3tjREjRuDOnTuPPA+PY/DgwRg5ciQOHz6s9+8PAIcPH8YLL7wAFxcX2Nvbo3Pnzjhw4ECZY/z5559o2bIlbG1tERgYiK+++qrceXSSJGHcuHFYvXo1mjRpAhsbG/zxxx8AKvYaBAAFBQWYPn066tevr3tNnDp1apnhz9TUVJw/fx55eXmPfP7u7u5o0qRJme19+/YFgDL/3p6ennjqqaewdevWRx63OuLQIVWKbdu2oX79+mjTpo1B9ysuLkb37t3RoUMH/O9//4O9vT2AkjedvLw8vPXWW6hZsyaOHDmChQsX4ubNm9i4caPu/jt27MDLL7+M4OBgzJkzB3fu3NG9Sf6TpKQkPPPMM7oXQQ8PD/z+++944403kJWVVWb4b+7cuVAoFJgyZQoyMzMxb948DB48WDeX6t1330VmZiZu3ryJzz77DADg6Oho0PkozdHREX379sW3336Ls2fP6l4Ux4wZg5UrVyIiIgLjx49HfHw8Fi1ahJiYGBw4cABWVlZITk7G888/Dw8PD0ybNg2urq64evUqNm/erPcYb7zxBlauXInw8HCMHDkSxcXF2LdvHw4dOoSWLVsCAGbNmoX33nsP/fv3x8iRI5GSkoKFCxeiU6dOiImJgaurq+546enpeOGFF9CvXz/0798fP/74I9555x2EhoYiPDwcQUFB+OCDD/D+++9j9OjR6NixIwCgXbt2j32eAODMmTPo2LEjnJ2dMXXqVFhZWeGrr75Cly5dsGfPHt3v5YwZMzBnzhyMHDkSrVu3RlZWFo4dO4YTJ07gueeeAwC8/PLLOHPmDP71r38hICAAycnJiIqKwvXr1x87OD/o8uXLAICaNWsCgO7fs1WrVpgzZw6SkpKwYMECHDhwoMw5Lm3IkCEYNWoUTp8+jZCQEN32o0eP4uLFi/i///s/vfZr1qxBdnY2xowZA0mSMG/ePPTr1w9XrlzRDeHt3LkT4eHhqFevHmbMmIH8/HwsXLgQ7du3x4kTJ8qcgwEDBiAoKAhz587Fr7/+io8++ghubm746quv0LVrV3z88cdYvXo1pkyZglatWqFTp04PPS9RUVG4cuUKIiIi4O3tjTNnzmDZsmU4c+YMDh06ZPQLAYYMGYJly5Zhx44dun//Xbt2ITw8HC1atMD06dOhUCiwYsUKdO3aFfv27UPr1q0BlAT7F154AbVq1cLMmTOhVqvxwQcfwMPDo9zH2rVrFzZs2IBx48bB3d0dAQEBFX4N0mg06NWrF/bv34/Ro0cjKCgIp06dwmeffYaLFy9iy5YtusdZtGgRZs6cid27d6NLly4Gn5PExEQAJUHsQS1atNB7LLpH7i41snyZmZkCgOjTp0+Zfenp6SIlJUX3lZeXp9s3bNgwAUBMmzatzP1Kt9OaM2eOkCRJXLt2TbetWbNmolatWiIjI0O3bceOHQJAmSE8AGL69Om622+88YaoVauWSE1N1Ws3cOBA4eLioqth9+7dAoAICgoSBQUFunYLFiwQAMSpU6d024w1dKj12WefCQBi69atQggh9u3bJwCI1atX67X7448/9Lb/9NNP/zjctmvXLgFAjB8/vsw+jUYjhBDi6tWrQqlUilmzZuntP3XqlFCpVHrbO3fuLACI77//XretoKBAeHt7i5dfflm3zRRDh3369BHW1tbi8uXLum23bt0STk5OolOnTrptTZs2feT5Tk9PL3eo73Fphw5nzpwpUlJSRGJiovjzzz9F8+bNBQCxadMmUVhYKDw9PUVISIjecNK2bdsEAPH+++/rtj04dJiRkSFsbW3FO++8o/e448ePFw4ODrqheG0dNWvWFGlpabp2W7duFQDEL7/8otvWrFkz4enpKe7cuaPbdvLkSaFQKMTQoUPL1FJ6+LO4uFjUqVNHSJIk5s6dq9uenp4u7OzsxLBhw8qcm9K/B+X93a9du1YAEHv37tVtM8bQobYuAKJv375CiJLf+wYNGoju3bvr/ga0ddWtW1c899xzum09e/YU9vb2IiEhQbctLi5OqFSqMsO7AIRCoRBnzpzR217R16AffvhBKBQKsW/fPr12S5cuFQDEgQMHyjzn3bt3P/LclKegoEAEBweLunXriqKiojL7Z8+eLQCIpKQkg49tyTh0SCaXlZUFoPzemy5dusDDw0P3tXjx4jJt3nrrrTLb7OzsdD/n5uYiNTUV7dq1gxACMTExAIDbt28jNjYWw4YNg4uLi679c889h+Dg4EfWLITApk2b0LNnTwghkJqaqvvq3r07MjMzceLECb37REREwNraWndb2xtz5cqVRz7Wk9Ce0+zsbAAlPX0uLi547rnn9Gpu0aIFHB0dsXv3bgDQ9YBs27YNRUVF5R5706ZNkCQJ06dPL7NP23OwefNmaDQa9O/fX+/xvL290aBBA93jla739ddf1922trZG69atTXqO1Go1duzYgT59+qBevXq67bVq1cJrr72G/fv3635HXV1dcebMGcTFxZV7LDs7O1hbW+PPP/8sMxT7JKZPnw4PDw94e3ujS5cuuHz5Mj7++GP069cPx44dQ3JyMsaOHQtbW1vdfXr06IHGjRvj119/fehxXVxc0Lt3b6xdu1Y3vKxWq7F+/Xr06dMHDg4Oeu0HDBiAGjVq6G4/+Dus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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "ename": "NameError", "evalue": "name 'polynomial_degree' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[7], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m alpha \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0.0000000000001\u001b[39m\n\u001b[1;32m----> 2\u001b[0m \u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43malpha\u001b[49m\u001b[43m)\u001b[49m\n", "Cell \u001b[1;32mIn[1], line 72\u001b[0m, in \u001b[0;36mrun\u001b[1;34m(alpha)\u001b[0m\n\u001b[0;32m 69\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# Predict on the test set\u001b[39;00m\n\u001b[1;32m---> 72\u001b[0m predictions \u001b[38;5;241m=\u001b[39m \u001b[43mpredict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_test\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweights\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 74\u001b[0m \u001b[38;5;66;03m# Calculate MSE on the test set\u001b[39;00m\n\u001b[0;32m 75\u001b[0m mse_test \u001b[38;5;241m=\u001b[39m mean_squared_error(predictions, y_test)\n", "Cell \u001b[1;32mIn[1], line 41\u001b[0m, in \u001b[0;36mpredict\u001b[1;34m(X, weights)\u001b[0m\n\u001b[0;32m 40\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpredict\u001b[39m(X, weights):\n\u001b[1;32m---> 41\u001b[0m poly \u001b[38;5;241m=\u001b[39m PolynomialFeatures(degree\u001b[38;5;241m=\u001b[39m\u001b[43mpolynomial_degree\u001b[49m)\n\u001b[0;32m 42\u001b[0m X_poly \u001b[38;5;241m=\u001b[39m poly\u001b[38;5;241m.\u001b[39mfit_transform(X)\n\u001b[0;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m X_poly\u001b[38;5;241m.\u001b[39mdot(weights)\n", "\u001b[1;31mNameError\u001b[0m: name 'polynomial_degree' is not defined" ] } ], "source": [ "alpha = 0.0000000000001\n", "run(alpha)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question**: What went wrong, and how can we fix it?" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.7" } }, "nbformat": 4, "nbformat_minor": 2 }